#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
#include"BinaryTree.h"
//假设使用数组实现队列   队列:先进先出  尾进头出
//队头-----队尾   ==>尾插:O(1) 头删:O(N)
//假设用链表实现队列  链表头----->链表尾  头删:O(1) 只需要增加一个标记链表尾部的指针 尾删:O(1)  
typedef TreeNode* DataType;
struct Node
{
    struct Node* next;
    DataType val;
};
typedef struct Node Node;

struct Queue
{
    Node* head;
    Node* tail;
};
typedef struct Queue queue;

void Init(queue* pq);
void Destory(queue* pq);
void push(queue* pq,DataType x);
void pop(queue* pq);
DataType front(queue* pq);
DataType back(queue* pq);
size_t size(queue* pq);
bool empty(queue* pq);
